package co.com.sewebpoint.ws;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;


import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import co.com.sewebpoint.dto.UsuarioWS;
import co.com.sewebpoint.dto.SolicitudWS;
import co.com.sewebpoint.exception.DaoExceptionSE;
import co.com.sewebpoint.exception.ServiceExceptionSE;
import co.com.sewebpoint.model.Usuario;
import co.com.sewebpoint.model.Solicitud;
import co.com.sewebpoint.service.UsuarioService;
import co.com.sewebpoint.service.SolicitudService;


/***
 * 
 * @author Esteban Hurtado y sara Tamayo
 * @version 1.0
 * 
 * Clase WebService Para Usuario
 *
 */



@Path("Usuario")
@Component

public class UsuarioWebService {
	
	@Autowired
	private UsuarioService usuarioService;
	
	
	
	@POST
	@Produces(MediaType.TEXT_PLAIN)
	
	public String validar(
						@QueryParam("user") String user,
						@QueryParam("password") String password
			
			) throws RemoteException{
		
		
		String respuesta="";
		
			try {
				usuarioService.validar(user, password);
				
				
				
			} catch (DaoExceptionSE e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				
				respuesta = e.getMessage();
			} catch (ServiceExceptionSE e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				
				respuesta = e.getMessage();
			}
		
			
			
			
		return respuesta;
	}
	
	
	
	
	
	
	
	
	/**
	 * Metodo que retorna la lista de Usuarios existente en l BD
	 * 
	 * 
	 * @return Lista de solicitudes existentes en la BD
	 * @throws RemoteException Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	
	public List<UsuarioWS> obtener() throws RemoteException{
		
		
		List<UsuarioWS> items = new ArrayList<UsuarioWS>();
		List<Usuario> itemSpring = new ArrayList<Usuario>();
		
	
		try {
			itemSpring = usuarioService.obtener();
			for (Usuario item :itemSpring){
				
				UsuarioWS itemWS = new UsuarioWS();
				
				
				itemWS.setUsuario(item.getUsuario());
				itemWS.setNombre(item.getNombre());
				itemWS.setPassword(item.getPassword());
				
				
				
				
				items.add(itemWS);
				
			}
			
			
			
		} catch (DaoExceptionSE e) {
			throw new RemoteException(e.getMessage());
		}
		
		
		
		return items;
		
		
	}
	
	
	
	

}
